package ar.com.sne.model.dao.per;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import foundation.common.util.FinderFilter;
import foundation.common.util.PagedFinder;

import ar.com.sne.dao.GenericDAO;
import ar.com.sne.model.bo.per.PerPersona;
import ar.com.sne.model.bo.per.PerPersona;

/**
 * DAO para el objeto del modelo: PerPersona.
 * @author Andrei
 */

public class PerPersonaDAO extends GenericDAO{

	public PerPersonaDAO() {
		super(PerPersona.class);
	}
	
	public PerPersonaDAO(Class boClass) {
		super(boClass);
	}

	private Logger log = Logger.getLogger(PerPersonaDAO.class);
	
	public PagedFinder findPaging(PagedFinder pf) {
		Criteria criteria =this.ListterFilter(pf.getFilter());		
		pf.setCount(super.getCount(criteria));
		criteria = this.ListterFilter(pf.getFilter());				
//		criteria.addOrder(Order.asc("importeChequeDesde"));
		criteria.setMaxResults(pf.getMaxResult());
		criteria.setFirstResult(pf.getFirstResult());
		pf.setResultList(criteria.list());		
		return pf;
	}
	
	private Criteria ListterFilter(FinderFilter filter){
		Criteria criteria = this.currentSession().createCriteria(PerPersona.class);
		
		
		Boolean vigencia = (Boolean) filter.getFilterValue("vigencia");
		if(vigencia!=null && vigencia){
			criteria.add(Restrictions.le("fechaDesde",new Date()));
			criteria.add(Restrictions.or(Restrictions.ge("fechaDesde",new Date()),Restrictions.isNull("fechaHasta")));
		}
		
		Double importeChequeDesde = (Double)filter.getFilterValue("importeChequeDesde");
		Double importeChequeHasta = (Double)filter.getFilterValue("importeChequeHasta");
		if(importeChequeDesde != null){
			criteria.add(Restrictions.or(Restrictions.eq("importeChequeDesde", importeChequeDesde),Restrictions.isNotNull("importeChequeDesde")));
		}
		if(importeChequeHasta != null){
			criteria.add(Restrictions.or(Restrictions.eq("importeChequeHasta", importeChequeHasta),Restrictions.isNotNull("importeChequeHasta")));
		}
		
		return criteria;
	}
	
	public List<PerPersona> findAll(){
		return null;
	}
	
	public List<PerPersona> find(FinderFilter filter) {
		return null;
	}
}
